static void gdk_window_impl_x11_finalize (GObject *object);
static void gdk_window_impl_iface_init (GdkWindowImplIface *iface);
+#define WINDOW_IS_TOPLEVEL_OR_FOREIGN(window) \
+ (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
+ GDK_WINDOW_TYPE (window) != GDK_WINDOW_OFFSCREEN)
+
#define WINDOW_IS_TOPLEVEL(window) \
(GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN && \
{
GdkDisplay *display;
- g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
-
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
display = GDK_WINDOW_DISPLAY (window);
XSizeHints size_hints;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
size_hints.flags = 0;
Atom atom;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
display = gdk_drawable_get_display (window);
g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_WINDOW_TYPE_HINT_NORMAL);
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return GDK_WINDOW_TYPE_HINT_NORMAL;
type = GDK_WINDOW_TYPE_HINT_NORMAL;
GdkWindowObject *private;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
private = (GdkWindowObject*) window;
g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD);
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
toplevel = _gdk_x11_window_get_toplevel (window);
g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD);
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
toplevel = _gdk_x11_window_get_toplevel (window);
g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD);
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
toplevel = _gdk_x11_window_get_toplevel (window);
XSizeHints size_hints;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
size_hints.flags = 0;
*geom_mask = 0;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
size_hints = XAllocSizeHints ();
g_return_if_fail (title != NULL);
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
display = gdk_drawable_get_display (window);
const gchar *role)
{
GdkDisplay *display;
-
+
display = gdk_drawable_get_display (window);
- if (!GDK_WINDOW_DESTROYED (window) &&
- WINDOW_IS_TOPLEVEL (window))
- {
- if (role)
- XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
- gdk_x11_get_xatom_by_name_for_display (display, "WM_WINDOW_ROLE"),
- XA_STRING, 8, PropModeReplace, (guchar *)role, strlen (role));
- else
- XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
- gdk_x11_get_xatom_by_name_for_display (display, "WM_WINDOW_ROLE"));
- }
+ if (GDK_WINDOW_DESTROYED (window) ||
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
+ return;
+
+ if (role)
+ XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
+ gdk_x11_get_xatom_by_name_for_display (display, "WM_WINDOW_ROLE"),
+ XA_STRING, 8, PropModeReplace, (guchar *)role, strlen (role));
+ else
+ XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
+ gdk_x11_get_xatom_by_name_for_display (display, "WM_WINDOW_ROLE"));
}
/**
* Since: 2.12
*
**/
-void
+void
gdk_window_set_startup_id (GdkWindow *window,
const gchar *startup_id)
{
GdkDisplay *display;
-
+
g_return_if_fail (GDK_IS_WINDOW (window));
display = gdk_drawable_get_display (window);
- if (!GDK_WINDOW_DESTROYED (window) &&
- WINDOW_IS_TOPLEVEL (window))
- {
- if (startup_id)
- XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
- gdk_x11_get_xatom_by_name_for_display (display, "_NET_STARTUP_ID"),
- gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), 8,
- PropModeReplace, (unsigned char *)startup_id, strlen (startup_id));
- else
- XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
- gdk_x11_get_xatom_by_name_for_display (display, "_NET_STARTUP_ID"));
- }
+ if (GDK_WINDOW_DESTROYED (window) ||
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
+ return;
+
+ if (startup_id)
+ XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
+ gdk_x11_get_xatom_by_name_for_display (display, "_NET_STARTUP_ID"),
+ gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), 8,
+ PropModeReplace, (unsigned char *)startup_id, strlen (startup_id));
+ else
+ XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
+ gdk_x11_get_xatom_by_name_for_display (display, "_NET_STARTUP_ID"));
}
/**
*
* See gtk_window_set_transient_for() if you're using #GtkWindow or
* #GtkDialog.
- *
**/
-void
-gdk_window_set_transient_for (GdkWindow *window,
+void
+gdk_window_set_transient_for (GdkWindow *window,
GdkWindow *parent)
{
if (!GDK_WINDOW_DESTROYED (window) && !GDK_WINDOW_DESTROYED (parent) &&
- WINDOW_IS_TOPLEVEL (window))
+ WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
XSetTransientForHint (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
GDK_WINDOW_XID (parent));
XSetWindowAttributes attr;
if (!GDK_WINDOW_DESTROYED (window) &&
- WINDOW_IS_TOPLEVEL (window))
+ WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
{
GdkWindowObject *private = (GdkWindowObject *)window;
GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
private->accept_focus = accept_focus;
if (!GDK_WINDOW_DESTROYED (window) &&
- WINDOW_IS_TOPLEVEL (window))
+ WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
update_wm_hints (window, FALSE);
}
}
if ((!GDK_WINDOW_DESTROYED (window)) &&
(!private->focus_on_map) &&
- WINDOW_IS_TOPLEVEL (window))
+ WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
gdk_x11_window_set_user_time (window, 0);
}
}
Window xid;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
display = gdk_drawable_get_display (window);
gint n;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
display = gdk_drawable_get_display (window);
{
GdkToplevelX11 *toplevel;
- g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD);
-
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
toplevel = _gdk_x11_window_get_toplevel (window);
GdkDisplay *display;
if (GDK_WINDOW_DESTROYED (window) ||
- WINDOW_IS_TOPLEVEL (window))
+ WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
display = gdk_drawable_get_display (window);
gdk_window_iconify (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_deiconify (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_stick (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_unstick (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_maximize (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_unmaximize (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_fullscreen (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
gdk_window_unfullscreen (GdkWindow *window)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
g_return_if_fail (GDK_IS_WINDOW (window));
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
g_return_if_fail (GDK_IS_WINDOW (window));
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (GDK_WINDOW_IS_MAPPED (window))
{
GdkToplevelX11 *toplevel;
- g_return_val_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD, NULL);
-
if (GDK_WINDOW_DESTROYED (window) ||
!WINDOW_IS_TOPLEVEL (window))
return NULL;
* if your application pretends to be multiple applications.
**/
void
-gdk_window_set_group (GdkWindow *window,
+gdk_window_set_group (GdkWindow *window,
GdkWindow *leader)
{
GdkToplevelX11 *toplevel;
toplevel = _gdk_x11_window_get_toplevel (window);
- if (leader == NULL)
+ if (leader == NULL)
leader = gdk_display_get_default_group (gdk_drawable_get_display (window));
if (toplevel->group_leader != leader)
MotifWmHints hints;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
/* initialize to zero to avoid writing uninitialized data to socket */
gboolean result = FALSE;
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return FALSE;
hints = gdk_window_get_mwm_hints (window);
g_return_if_fail (GDK_IS_WINDOW (window));
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
/* initialize to zero to avoid writing uninitialized data to socket */
guint32 timestamp)
{
if (GDK_WINDOW_DESTROYED (window) ||
- !WINDOW_IS_TOPLEVEL (window))
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
if (gdk_x11_screen_supports_net_wm_hint (GDK_WINDOW_SCREEN (window),
guint32 cardinal;
g_return_if_fail (GDK_IS_WINDOW (window));
- g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
if (GDK_WINDOW_DESTROYED (window) ||
!WINDOW_IS_TOPLEVEL (window))